﻿Imports Microsoft.DirectX
Public Class ObjektHauptmenue
    Inherits ObjektFormMenue
    Dim Text As ObjektText
    Dim SetUsername As Boolean = False
    Public Sub New()
        MyBase.New(New ObjektButton() {}, Nothing, New ObjektNumericUpDown() {}, Nothing, New ObjektValueSchieber() {}, New ObjektMultiValue() {}, New ObjektCheckBox() {})
        Dim GM As CommanderWarsGameModi = DataSettings.CommanderWarsGameModus
        Dim OldT As TerrainStyle = DataSettings.TerrainStyle
        If GM <> DataSettings.CommanderWarsGameModus Or OldT <> DataSettings.TerrainStyle Then
            Objektverwalter.LoadNewGameModus(OldT)
        End If
        ObjektMaus.Zustand = ObjektMaus.Zustaende.Menue
        If DataSettings.Verhaeltnis = Hauptmenue.Breitbild Then
            Objektverwalter.LoadHintergrund(DataSettings.Resourcenpfad + "Backgrounds\HM1280a800.bmp")
        Else
            Objektverwalter.LoadHintergrund(DataSettings.Resourcenpfad + "Backgrounds\HM800a600.bmp")
        End If
        Dim Y As Integer = DataSettings.BildschirmHoehe / 2 - 22 * 5
        If Not DataSettings.LetztesSpiel = "" And My.Computer.FileSystem.FileExists(DataSettings.LetztesSpiel) Then NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Fortsetzen", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Einzelspieler", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Mehrspieler", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Laden", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Editor", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Aufzeichnung", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Optionen", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Spielerdaten", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Credits", New PointF(0.5#, 0.5#))
        Y += 22
        NeuButton(DataSettings.BildschirmBreite / 2 - 54, Y, DataSettings.Resourcenpfad + "Objects\Button.png", "Beenden", New PointF(0.5#, 0.5#))

        Text = New ObjektText(New String() {"Advance Wars, Advance Wars 2, Advance Wars DS, DC, DoR and all content" + Environment.NewLine() + "contained in those games are copyright" + Environment.NewLine() + "(c) 1990-2005 Nintendo, and 2001-2005 Intelligent Systems." + Environment.NewLine() + "This game was not made with the permission of Nintendo or Intelligent Systems" + Environment.NewLine + "Thanks to Custom Wars for their sprites and Sounds"}, 20, DataSettings.BildschirmHoehe - 100, Nothing, Schriftengine.Schriftarten.Arial, 10, FontStyle.Regular)

        'Das hier war nur so zum Test meiner neuesten Kreationen Gedacht!=)
        'NeuTextFeld(30, 30, 205)
        'NeuDropDownMenue(250, 30, New String() {"Hallo", "Hallo1", "Hallo2", "Hallo3", "Hallo4"})
        'Dim C(Hauptmenue.AlleFarbtabellen.Length - 1) As Color
        'For I = 0 To C.Length - 1
        '    C(I) = Hauptmenue.AlleFarbtabellen(I).GetPixel(7, 0)
        'Next
        'NeuDropDownMenue(250, 60, C)
        'eine evtl. Netzwerkverbindung wieder loesen
        If Hauptmenue.Connection IsNot Nothing Then
            Hauptmenue.Connection.Close(False)
            Hauptmenue.Connection = Nothing
            Hauptmenue.Connection = New GameConnection
        End If
    End Sub
    Public Overrides Sub KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        Select Case e.KeyCode
            Case Keys.Escape
                Hauptmenue.MainMenue.Close()
            Case Else
                KeyDownObjekte(sender, e)
        End Select
    End Sub

    Public Overrides Sub Malen()
        MyBase.ObjekteMalen()
        Schriftengine.DrawText(Text, New Point)

    End Sub

    Public Overrides Sub MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Select Case e.Button
            Case Windows.Forms.MouseButtons.Left
                checkMouseDownObjekte(ObjektMaus.XKoordinate, ObjektMaus.YKoordinate)
        End Select
    End Sub

    Public Overrides Sub MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)



        MouseMoveObjekte(e.X, e.Y)
    End Sub

    Public Overrides Sub MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Select Case e.Button
            Case Windows.Forms.MouseButtons.Left
                ButtonGeklicktLinks(checkMouseUPObjekte(ObjektMaus.XKoordinate, ObjektMaus.YKoordinate))
        End Select
    End Sub
    Public Sub ButtonGeklicktLinks(ByVal Effekt As String)
        If Effekt = Nothing Then
            Exit Sub
        End If
        Select Case Effekt.ToLower
            Case "beenden"
                Hauptmenue.MainMenue.Close()
            Case "optionen"
                Hauptmenue.Ini(Hauptmenue.Formmodi.Optionen)
            Case "einzelspieler"
                Hauptmenue.Ini(Hauptmenue.Formmodi.Kartenauswahl)
            Case "editor"
                Hauptmenue.Ini(Hauptmenue.Formmodi.Editor)
            Case "laden"
                SpielstandLaden()
            Case "mehrspieler"
                Hauptmenue.Ini(Hauptmenue.Formmodi.KartenauswahlMP)
            Case "fortsetzen"
                'Eigentlich nur zur Sicherheit, da man auf den Knopf eigentlich nur druecken kann, wann es ein Spiel gibt, welches man Fortsetzen kann. Ausserdem darf man die Spracheingabe nicht vergessen ;)

                If Not DataSettings.LetztesSpiel = "" Then
                    If My.Computer.FileSystem.FileExists(DataSettings.LetztesSpiel) Then
                        Hauptmenue.Pause = True

                        Dim LB As New ObjektLadebildschirm(3, "", DataSettings.LetztesSpiel, False, ".sav", True, False, , , True)

                        Hauptmenue.Ini(Hauptmenue.Formmodi.Spiel, True, True)
                    End If
                End If
            Case "credits"
                Hauptmenue.Ini(Hauptmenue.Formmodi.Credits)
            Case "aufzeichnung"
                AufzeichnungAuswaehlen()
            Case "spielerdaten"
                Hauptmenue.Ini(Hauptmenue.Formmodi.Usermenue)
        End Select
    End Sub

    Public Overrides Sub SetMausBild()
        ObjektMaus.Zustand = ObjektMaus.Zustaende.Menue
    End Sub

    Public Overrides Sub Frame()
        If Not SetUsername Then
            While DataSettings.Autor = "Anonym" Or DataSettings.Autor = ""
                SetUsername = True
                If MessageBox.ShowEnterText("Gib deinen Namen ein!", "Name") = MsgBoxResult.Ok Then
                    DataSettings.Autor = MessageBox.Output(0)
                    DataSettings.MySettingsIniSave()
                    Hauptmenue.User = New Userdata
                End If
            End While
            SetUsername = False
        End If
    End Sub

    Public Overrides Sub MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
    End Sub

    Public Overrides Sub IniMenue()

    End Sub

    Public Sub SpielstandLaden()
        If MessageBox.ShowOpenSaveDialogue(MessageBox.Modi.OpenDialog, Sprachconverter.Translate("Spielstand") + " " + Sprachconverter.Translate("Laden"), DataSettings.Resourcenpfad + "Savegames\", New String() {"CoW " + Sprachconverter.Translate("Spielstaende") + " ; *.sav"}) = DialogResult.OK Then
            If My.Computer.FileSystem.FileExists(MessageBox.CurrentFile) Then
                Dim Name As String = MessageBox.CurrentFile
                Dim Endung As String = "map"
                If Name.LastIndexOf("\") >= 0 Then
                    Hauptmenue.Pause = True

                    If Name.LastIndexOf(".") >= 0 Then
                        Dim LB As New ObjektLadebildschirm(3, "", Name, True, ".map", True, False, , , True)
                    Else
                        Dim LB As New ObjektLadebildschirm(3, "", Name, True, ".sav", True, False, , , True)
                    End If
                    Hauptmenue.Ini(Hauptmenue.Formmodi.Spiel, True, True)
                Else

                    Hauptmenue.Pause = True
                    Dim LB As New ObjektLadebildschirm(3, "", Name, False, ".sav", True, False, , , True)

                    Hauptmenue.Ini(Hauptmenue.Formmodi.Spiel, True, True)
                End If
            End If
        End If
    End Sub

    Public Overrides Sub SprachEingabe(ByVal Eingabe As String)
        ButtonGeklicktLinks(Eingabe.ToLower)
    End Sub

    Public Overrides Sub ChangeWindowSize(ByVal PosChange As System.Drawing.Point)
        MyBase.ChangeWindowSizeObjekte(PosChange)
        Text.neuerText(Text.Text, Text.XStart, Text.YStart + PosChange.Y * 1, Nothing)
    End Sub

    Public Sub AufzeichnungAuswaehlen()
        If MessageBox.ShowOpenSaveDialogue(MessageBox.Modi.OpenDialog, Sprachconverter.Translate("Aufzeichnung") + " " + Sprachconverter.Translate("Laden"), DataSettings.Resourcenpfad + "Record\", New String() {"Commander Wars" + Sprachconverter.Translate("Aufzeichnung") + " ; *.rpl"}) = DialogResult.OK Then
            If My.Computer.FileSystem.FileExists(MessageBox.CurrentFile) Then
                Hauptmenue.AufzeichnungAbspielenStart(MessageBox.CurrentFile)
            End If
        End If
    End Sub

    Public Overrides Sub KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)

    End Sub
End Class
